package com.ldk.framework.enums;

import org.apache.commons.lang.StringUtils;

public enum TradePayStatus {

	/**
	 * WAIT_BUYER_PAY 交易创建，等待买家付款。 TRADE_CLOSED 在指定时间段内未支付时关闭的交易；
	 * 在交易完成全额退款成功时关闭的交易。 TRADE_SUCCESS 交易成功，且可对该交易做操作，如：多级分润、退款等。
	 * TRADE_FINISHED 交易成功且结束，即不可再做任何操作。
	 **/
	NONE("全部", 0), 
	WAIT_BUYER_PAY("交易创建，等待买家付款", 1), 
	TRADE_CLOSED("在指定时间段内未支付而关闭", 2), 
	TRADE_SUCCESS("交易成功且还可操作", 3), 
	TRADE_FINISHED("交易成功且结束", 4), 
	TRADE_REFUND("转入退款", 5), 
	TRADE_REVOKED("已撤销", 6), 
	TRADE_USERPAYING("用户支付中", 7), 
	OTHERS("其他", -1024), ;// 别把这小分号给删了哦

	// 成员变量
	private String name;
	private int value;

	// 构造方法
	private TradePayStatus(String name, int value) {
		this.name = name;
		this.value = value;
	}

	// 覆盖方法
	@Override
	public String toString() {
		return this.value + "::" + this.name;
	}

	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}

	public int getValue() {
		return value;
	}

	public static TradePayStatus getAlipayStatus(String statusString) {
		if (StringUtils.isEmpty(statusString)) {
			return TradePayStatus.NONE;
		}
		String status = statusString.toUpperCase();
		if(status.equalsIgnoreCase("NONE")){
			return TradePayStatus.NONE;
		}
		else if(status.equalsIgnoreCase("WAIT_BUYER_PAY")){
			return TradePayStatus.WAIT_BUYER_PAY;
		}
		else if(status.equalsIgnoreCase("TRADE_CLOSED")){
			return TradePayStatus.TRADE_CLOSED;
		}
		else if(status.equalsIgnoreCase("TRADE_SUCCESS")){
			return TradePayStatus.TRADE_SUCCESS;
		}
		else if(status.equalsIgnoreCase("TRADE_FINISHED")){
			return TradePayStatus.TRADE_FINISHED;
		}
		else if(status.equalsIgnoreCase("OTHERS")){
			return TradePayStatus.OTHERS;
		}
		else{
			return TradePayStatus.NONE;
		}

	}

	public static TradePayStatus getTenpayStatus(String statusString) {
		if (StringUtils.isEmpty(statusString)) {
			return TradePayStatus.NONE;
		}
		String status = statusString.toUpperCase();
		if(status.equalsIgnoreCase("NONE")){
			return TradePayStatus.NONE;
		}
		else if(status.equalsIgnoreCase("NOTPAY")){
			return TradePayStatus.WAIT_BUYER_PAY;
		}
		else if(status.equalsIgnoreCase("CLOSED")){
			return TradePayStatus.TRADE_CLOSED;
		}
		else if(status.equalsIgnoreCase("SUCCESS")){
			return TradePayStatus.TRADE_SUCCESS;
		}
		else if(status.equalsIgnoreCase("REVOKED")){
			return TradePayStatus.TRADE_REVOKED;
		}
		else if(status.equalsIgnoreCase("REFUND")){
			return TradePayStatus.TRADE_REFUND;
		}
		else if(status.equalsIgnoreCase("USERPAYING")){
			return TradePayStatus.TRADE_USERPAYING;
		}
		else if(status.equalsIgnoreCase("OTHERS")){
			return TradePayStatus.OTHERS;
		}
		else{
			return TradePayStatus.NONE;
		}

	}

}
